package com.ffcs.trino.base;

import lombok.Data;

import java.io.Serializable;

/**
 * @author zhangzhengxing
 */
@Data
public class R<T> implements Serializable {
  /**
   * 编码
   */
  private String code;

  /**
   * 返回消息
   */
  private String msg;

  /**
   * Response
   */
  private T data;

  /**
   * 成功
   *
   * @param <T>
   * @return
   */
  public static <T> R<T> ok() {
    R<T> r = new R<>();
    r.setMsg("成功");
    r.setCode("00000");
    return r;
  }

  /**
   * 返回成功展示数据
   *
   * @param t
   * @param <T>
   * @return
   */
  public static <T> R<T> ok(T t) {
    R<T> r = new R<>();
    r.setMsg("成功");
    r.setCode("00000");
    r.setData(t);

    // 判断当前是否是布尔值并且修改成功
    if (t instanceof Boolean && !(Boolean) t) {
      r.setMsg("失败");
      r.setCode("500");
    }
    return r;
  }

  /**
   * 错误
   *
   * @return
   */
  public static <T> R<T> error(String message) {
    R<T> r = new R<>();
    r.setMsg(message);
    r.setCode("500");
    return r;
  }

  /**
   * 错误
   *
   * @return
   */
  public static <T> R<T> error() {
    R<T> r = new R<>();
    r.setMsg("异常");
    r.setCode("500");
    return r;
  }
}

